//
//  StatusViewModel.swift
//  xinlangweibo
//
//  Created by yangshuo on 15/12/3.
//  Copyright © 2015年 yangshuo. All rights reserved.
//

//注意foundation不能用于UIImage,必须设置为UIKit
import UIKit
//微博视图模型-处理单条微博的业务逻辑
//statusViewModel,没有父类,无法重写父类的description描述信息,分两步
//1.遵守协议:CustomStringConvertible
//2.实现计算性属性description
class StatusViewModel: CustomStringConvertible {
    //有两种创建属性方式
    //第一种:var status: Status?
    //第二种:构造函数
    //微博的模型
    var status: Status
    
    //缓存的行高,因为rowheight不需要KVC赋值,所以可以设为可选项
    var rowHeight: CGFloat?
   
  /**---------------- 懒加载缓存行高--------------
    //缓存的行号还可以通过懒加载方式进行判断,因为懒加载的特点是没有值才会执行
//    lazy var rowHeight: CGFloat = {
//        print("缓存行高\(self.status.text)")
//        //将模型视图丢给cell->然后在cell的控制器中调用rowheight函数
//        let cell = StatusCell(style: .Default, reuseIdentifier:
//            StatusCellNormalId)
//        
//                //记录行号
//        return cell.rowHeight(self)
//
//    }()
----------------------------------------------*/
    
    
    //用户头像 URL
    var userProfile_image_url: NSURL{
        return NSURL(string: status.user?.profile_image_url ?? "")!
    }
    //占位头像 image
    var userDeafaultImage: UIImage{
        return UIImage(named: "avatar_default_big")!
    }
   //会员图标
    var userMemberIconView: UIImage?{
        if status.user?.mbrank > 0 && status.user?.mbrank < 7{
            return UIImage(named: "common_icon_membership_level\(status.user!.mbrank)")
        }
        return nil
    }
    //用户认证图标
    ///认证类型，-1：没有认证，0，认证用户，2,3,5: 企业认证，220: 达人
    var userVerified_type: UIImage?{
        switch(status.user?.verified_type ?? -1){
        case 0: return UIImage(named: "avatar_vip")
        case 2, 3, 5: return UIImage(named: "avatar_enterprise_vip")
        case 220: return UIImage(named: "avatar_grassroot")
        default: return nil
        }
    }
    
    //缩略图数组->存储性属性
    var thumbnailUrls: [NSURL]?
    //构造函数
    init(status: Status){
        self.status = status
        //根据模型,来生成缩略图的数组
        
        //如果是原创微博,可以有图,也可以没图
        //如果是转发微博,一定没有图,被转发微博retweeted_status可以有图,也可以没有图
        //一条微博最只能有一个pic_urls,所以可以使用status.retweeted_status?.pic_urls ?? status.pic_urls,进行判断,被转发微博显示图片的话,转发微博一定没有图!
       if let urls = status.retweeted_status?.pic_urls ?? status.pic_urls{
        
        //字典数组->数组模型
        //创建一个缩略图数组
            //创建缩略图数组,分配空间
            thumbnailUrls = [NSURL]()
            //遍历数组字典->
        for dict in urls{
                //通过数组中字典键值对,获取图片的URL
              //因为是通过key("thumbnail_pic")来取值,如果key错误,显示nil
            let url = NSURL(string: dict["thumbnail_pic"]!)
                //默认url一定有值,否则代码很累赘
            thumbnailUrls?.append(url!)
        }
    }
    }
    ///描述信息
    var description: String{
        //array as NSArray array一定要有值,所以可以使用 ?? []
        return status.description + "配图信息\(thumbnailUrls ?? [] as NSArray)"
    }
}